package com.czp.menu.mapper;

import java.util.List;

import org.apache.ibatis.session.RowBounds;

import com.czp.menu.model.Icon;
import com.czp.menu.model.Menu;

public interface IMenuMapper {
	/** 
	 * 【描 述】：根据id获取"用户菜单"集合
	 * @param personId人员Id
	 * @return 菜单结果集
	 * @throws Exception
	 */
	List<Menu> getMenuList(String personId) throws Exception;
	
	/** 
	 * 【描 述】：根据父ID查询"设置菜单"集合
	 * @param 父菜单ID
	 * @return "设置"菜单集合
	 * @throws Exception
	 */
	List<Menu> getSettingsListByPid(String pid) throws Exception;
	
	/** 
	 * 【描 述】：根据父节点ID查询菜单节点集合
	 * @param menu(父节点ID, 菜单类型)
	 * @return 节点数据集合
	 * @throws Exception
	 */
	List<Menu> getMenuTreeByPid(Menu menu) throws Exception;
	
	/** 
	 * 【描 述】：添加"用户菜单"节点
	 * @param menu菜单实体
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int addMenuNode(Menu menu) throws Exception;
	
	/** 
	 * 【描 述】：更新父菜单节点leaf状态
	 * @param 父菜单ID
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int updateParentLeaf(String pid) throws Exception;
	
	/** 
	 * 【描 述】：修改菜单节点
	 * @param menu菜单实体
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int modifyMenuNode(Menu menu) throws Exception;
	
	/** 
	 * 【描 述】：删除菜单节点
	 * @param menu菜单实体
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteMenuNode(Menu menu) throws Exception;
	
	/** 
	 * 【描 述】：通过PID获取节点下最大排序数值并+1
	 * @param Menu实体(pid,menuType)
	 * @return 最大数+1
	 * @throws Exception
	 */
	String getMenuMaxOrderByPid(Menu menu) throws Exception;
	
	/**
	 * 【描 述】：重新对节点进行排序
	 * @param Menu实体类(id,pid,menuOrd)
	 * @return 被影响的行数
	 * @throws Exception
	 */
	int sortMenuNode(Menu menu) throws Exception;
	
	/** 
	 * 【描 述】：查询Icon图标样式
	 * @param Icon(start, limit)
	 * @param RowBounds(start, limit)
	 * @return 样式集合
	 * @throws Exception
	 */
	List<Icon> queryMenuIcon(Icon icon, RowBounds bounds) throws Exception;
	
	/** 
	 * 【描 述】：查询Icon图标数量
	 * @return 数量
	 * @throws Exception
	 */
	int queryIconCount() throws Exception;
	
	/** 
	 * 【描 述】：查询根菜单信息
	 * @return 菜单集合
	 * @throws Exception
	 */
	List<Menu> getMenuRootList() throws Exception;
	
	/** 
	 * 【描 述】：根据父节点id查询叶子节点
	 * @param pid父节点Id
	 * @return 节点集合
	 * @throws Exception
	 */
	List<Menu> getMenuLeafByPid(String pid) throws Exception;
}
